监督学习
数据有label,每组数据都有一个特定的label用以标示该组数据所属的类别。
一个简单的例子就是,根据之前多(房屋面积,房屋价格)
的数据来训练系统,以便在给出房屋面积后,得出房屋的价格。
线性回归 VS. 逻辑回归
线性回归对每个input
会给出一个output
,连续的。
逻辑回归对数据进行归类,离散的。
线性回归
hypothesis:$ h_{\theta} = \sum_{i=0}^m \theta_i x_i $
cost function: $ J(\theta) = \frac{1} {2m} \sum_{i=0}^m (h_{\theta}(x^{(i)}) - y^{(i)})^2 $
线性回归的目标是:求得能够使$ J(\theta)$最小的$\Theta$,其中$\Theta$是$\theta_i$组成的vector;这样就可以根据$\Theta$和输入值运用公式$\sum_{i=0}^m \theta_i x_i $就可以得到目标值。
梯度下降(gradient descent)
求$\Theta$的过程中要用到梯度下降(gradient descent)
,其公式为:
$$\theta_j := \theta_j - \alpha \frac {\partial}{\partial \theta_j}J(\theta) = \theta_j - \alpha \frac{1} {m} \sum_{i=0}^m (h_{\theta}(x^{(i)}) - y^{(i)})x_j^{(i)}$$ (simultaneously update $\theta_j$ for all j)
公式中的$ \alpha \frac{1} {m} \sum_{i=0}^m (h_{\theta}(x^{(i)}) - y^{(i)})x_j^{(i)}$实际上是对cost function进行$\theta_j$求导;求导的意义是求得某条曲线或者曲面在某个点对某个维度的斜率,所以$ \alpha \frac {\partial}{\partial \theta_j}J(\theta)$的意义是:首先对$\theta$在j这个维度上对$\theta_j$进行求导,得到斜率,然后乘以$\alpha$得到沿着斜率的一小段位移,所以整个梯度下降就可以理解为:
每次都将所有$\theta_j$在j维度上沿着斜率方向,向着能够使$\theta_j$减小的方向移动一小段距离;通过多次移动从而使得整个$\theta$收敛到最小值。
normal equation
除了用梯度下降,还有一种方法来求$\Theta$
normal equation: $\theta = (X^TX)^{-1}X^Ty$
预测&逻辑回归
用线性回归预测
线性回归也可以用来进行预测,方法是:首先训练出线性回归的$\Theta$,这样就可以拟合出一条曲线(为了描述简单,以二维空间为例),然后根据设定的threshold,进行分类;比如一个分类问题的所有样本的(x,y)的取值范围为x:[-10,10]
,y:[-10,10]
,拟合出的曲线划定x<0,y<0
的点是一个类别,x>=0,y>=0
的是另一个类别,这样看起来是可以解决这个分类问题,但是如果这个分类问题增加一个样本x=10000,y=10000
的话,线性回归拟合出来的曲线的对分类问题的分界点就不再是x<0,y<0
了,有可能变成了x<500,y<500
,这样得出的分类器是不正确的。
为了解决这种局限性,提出了逻辑回归
逻辑回归
hypothesis:$ h_{\theta} = g(\theta^Tx) $
sigmoid function: $g(z) = \frac {1} {1+e^{-z}}$
cost function: $J(\theta) = \frac {1} {m} \sum_{i=1}^{m}[-y^{(i)}log(h_{\theta}(x^{(i)})) - (1-y^{(i)})log(h_{\theta}(x^{(i)}))]$
gradient descent: $\theta_j := \theta_j - \alpha \frac {\partial}{\partial \theta_j}J(\theta) = \theta_j - \alpha \frac{1} {m} \sum_{i=0}^m (h_{\theta}(x^{(i)}) - y^{(i)})x_j^{(i)}$
梯度下降公式看起来和线性回归的是一样的,但是因为两者的$h(\theta)$是不一样的,所以其本质不一样,只是表现形式一样。
逻辑回归通过引入逻辑方程(logistic function, sigmoid function)
,将所有$h(\theta)$的值限定在[0,1]之间。逻辑方程如图所示
正则化(regularization)
线性回归和逻辑回归都存在过拟合(over fitting)
的问题,过拟合的表现为:对所有样本数据能够很好的拟合(能够使cost function最小),但是对于新的数据通常不能很好的预测,这种情况也被称为high bias
。
解决方法: 1.减少特征的数量; 2.正则化
所谓正则化是在cost function的后面加上一个正则项:$ \frac { \lambda } {2m} \sum_{j=1}^n\theta_j^2 $
以线性回归为例,其cost function变为:$ J(\theta) = \frac{1} {2m} \sum_{i=0}^m (h_{\theta}(x^{(i)}) - y^{(i)})^2 + \frac { \lambda } {2m} \sum_{j=1}^n\theta_j^2 $
神经网络
svm
非监督学习
数据没有label,每组数据的分类特性需要通过算法获得。
一个例子就是,google新闻收集各个门户网站的新闻,然后对新闻进行分类,然而在分类之前并不知道每个新闻所属的具体类别。